`timescale 1ps/1ps
module sbox(
    input  [8:0]addr,
    output [7:0]data
);

reg [7:0]out1;
reg [7:0]out2;

always@(addr[7:0])
    case(addr[7:0])
        8'h00: out1=8'h63;
        8'h01: out1=8'h7c;
        8'h02: out1=8'h77;
        8'h03: out1=8'h7b;
        8'h04: out1=8'hf2;
        8'h05: out1=8'h6b;
        8'h06: out1=8'h6f;
        8'h07: out1=8'hc5;
        8'h08: out1=8'h30;
        8'h09: out1=8'h01;
        8'h0a: out1=8'h67;
        8'h0b: out1=8'h2b;
        8'h0c: out1=8'hfe;
        8'h0d: out1=8'hd7;
        8'h0e: out1=8'hab;
        8'h0f: out1=8'h76;
        8'h10: out1=8'hca;
        8'h11: out1=8'h82;
        8'h12: out1=8'hc9;
        8'h13: out1=8'h7d;
        8'h14: out1=8'hfa;
        8'h15: out1=8'h59;
        8'h16: out1=8'h47;
        8'h17: out1=8'hf0;
        8'h18: out1=8'had;
        8'h19: out1=8'hd4;
        8'h1a: out1=8'ha2;
        8'h1b: out1=8'haf;
        8'h1c: out1=8'h9c;
        8'h1d: out1=8'ha4;
        8'h1e: out1=8'h72;
        8'h1f: out1=8'hc0;
        8'h20: out1=8'hb7;
        8'h21: out1=8'hfd;
        8'h22: out1=8'h93;
        8'h23: out1=8'h26;
        8'h24: out1=8'h36;
        8'h25: out1=8'h3f;
        8'h26: out1=8'hf7;
        8'h27: out1=8'hcc;
        8'h28: out1=8'h34;
        8'h29: out1=8'ha5;
        8'h2a: out1=8'he5;
        8'h2b: out1=8'hf1;
        8'h2c: out1=8'h71;
        8'h2d: out1=8'hd8;
        8'h2e: out1=8'h31;
        8'h2f: out1=8'h15;
        8'h30: out1=8'h04;
        8'h31: out1=8'hc7;
        8'h32: out1=8'h23;
        8'h33: out1=8'hc3;
        8'h34: out1=8'h18;
        8'h35: out1=8'h96;
        8'h36: out1=8'h05;
        8'h37: out1=8'h9a;
        8'h38: out1=8'h07;
        8'h39: out1=8'h12;
        8'h3a: out1=8'h80;
        8'h3b: out1=8'he2;
        8'h3c: out1=8'heb;
        8'h3d: out1=8'h27;
        8'h3e: out1=8'hb2;
        8'h3f: out1=8'h75;
        8'h40: out1=8'h09;
        8'h41: out1=8'h83;
        8'h42: out1=8'h2c;
        8'h43: out1=8'h1a;
        8'h44: out1=8'h1b;
        8'h45: out1=8'h6e;
        8'h46: out1=8'h5a;
        8'h47: out1=8'ha0;
        8'h48: out1=8'h52;
        8'h49: out1=8'h3b;
        8'h4a: out1=8'hd6;
        8'h4b: out1=8'hb3;
        8'h4c: out1=8'h29;
        8'h4d: out1=8'he3;
        8'h4e: out1=8'h2f;
        8'h4f: out1=8'h84;
        8'h50: out1=8'h53;
        8'h51: out1=8'hd1;
        8'h52: out1=8'h00;
        8'h53: out1=8'hed;
        8'h54: out1=8'h20;
        8'h55: out1=8'hfc;
        8'h56: out1=8'hb1;
        8'h57: out1=8'h5b;
        8'h58: out1=8'h6a;
        8'h59: out1=8'hcb;
        8'h5a: out1=8'hbe;
        8'h5b: out1=8'h39;
        8'h5c: out1=8'h4a;
        8'h5d: out1=8'h4c;
        8'h5e: out1=8'h58;
        8'h5f: out1=8'hcf;
        8'h60: out1=8'hd0;
        8'h61: out1=8'hef;
        8'h62: out1=8'haa;
        8'h63: out1=8'hfb;
        8'h64: out1=8'h43;
        8'h65: out1=8'h4d;
        8'h66: out1=8'h33;
        8'h67: out1=8'h85;
        8'h68: out1=8'h45;
        8'h69: out1=8'hf9;
        8'h6a: out1=8'h02;
        8'h6b: out1=8'h7f;
        8'h6c: out1=8'h50;
        8'h6d: out1=8'h3c;
        8'h6e: out1=8'h9f;
        8'h6f: out1=8'ha8;
        8'h70: out1=8'h51;
        8'h71: out1=8'ha3;
        8'h72: out1=8'h40;
        8'h73: out1=8'h8f;
        8'h74: out1=8'h92;
        8'h75: out1=8'h9d;
        8'h76: out1=8'h38;
        8'h77: out1=8'hf5;
        8'h78: out1=8'hbc;
        8'h79: out1=8'hb6;
        8'h7a: out1=8'hda;
        8'h7b: out1=8'h21;
        8'h7c: out1=8'h10;
        8'h7d: out1=8'hff;
        8'h7e: out1=8'hf3;
        8'h7f: out1=8'hd2;
        8'h80: out1=8'hcd;
        8'h81: out1=8'h0c;
        8'h82: out1=8'h13;
        8'h83: out1=8'hec;
        8'h84: out1=8'h5f;
        8'h85: out1=8'h97;
        8'h86: out1=8'h44;
        8'h87: out1=8'h17;
        8'h88: out1=8'hc4;
        8'h89: out1=8'ha7;
        8'h8a: out1=8'h7e;
        8'h8b: out1=8'h3d;
        8'h8c: out1=8'h64;
        8'h8d: out1=8'h5d;
        8'h8e: out1=8'h19;
        8'h8f: out1=8'h73;
        8'h90: out1=8'h60;
        8'h91: out1=8'h81;
        8'h92: out1=8'h4f;
        8'h93: out1=8'hdc;
        8'h94: out1=8'h22;
        8'h95: out1=8'h2a;
        8'h96: out1=8'h90;
        8'h97: out1=8'h88;
        8'h98: out1=8'h46;
        8'h99: out1=8'hee;
        8'h9a: out1=8'hb8;
        8'h9b: out1=8'h14;
        8'h9c: out1=8'hde;
        8'h9d: out1=8'h5e;
        8'h9e: out1=8'h0b;
        8'h9f: out1=8'hdb;
        8'ha0: out1=8'he0;
        8'ha1: out1=8'h32;
        8'ha2: out1=8'h3a;
        8'ha3: out1=8'h0a;
        8'ha4: out1=8'h49;
        8'ha5: out1=8'h06;
        8'ha6: out1=8'h24;
        8'ha7: out1=8'h5c;
        8'ha8: out1=8'hc2;
        8'ha9: out1=8'hd3;
        8'haa: out1=8'hac;
        8'hab: out1=8'h62;
        8'hac: out1=8'h91;
        8'had: out1=8'h95;
        8'hae: out1=8'he4;
        8'haf: out1=8'h79;
        8'hb0: out1=8'he7;
        8'hb1: out1=8'hc8;
        8'hb2: out1=8'h37;
        8'hb3: out1=8'h6d;
        8'hb4: out1=8'h8d;
        8'hb5: out1=8'hd5;
        8'hb6: out1=8'h4e;
        8'hb7: out1=8'ha9;
        8'hb8: out1=8'h6c;
        8'hb9: out1=8'h56;
        8'hba: out1=8'hf4;
        8'hbb: out1=8'hea;
        8'hbc: out1=8'h65;
        8'hbd: out1=8'h7a;
        8'hbe: out1=8'hae;
        8'hbf: out1=8'h08;
        8'hc0: out1=8'hba;
        8'hc1: out1=8'h78;
        8'hc2: out1=8'h25;
        8'hc3: out1=8'h2e;
        8'hc4: out1=8'h1c;
        8'hc5: out1=8'ha6;
        8'hc6: out1=8'hb4;
        8'hc7: out1=8'hc6;
        8'hc8: out1=8'he8;
        8'hc9: out1=8'hdd;
        8'hca: out1=8'h74;
        8'hcb: out1=8'h1f;
        8'hcc: out1=8'h4b;
        8'hcd: out1=8'hbd;
        8'hce: out1=8'h8b;
        8'hcf: out1=8'h8a;
        8'hd0: out1=8'h70;
        8'hd1: out1=8'h3e;
        8'hd2: out1=8'hb5;
        8'hd3: out1=8'h66;
        8'hd4: out1=8'h48;
        8'hd5: out1=8'h03;
        8'hd6: out1=8'hf6;
        8'hd7: out1=8'h0e;
        8'hd8: out1=8'h61;
        8'hd9: out1=8'h35;
        8'hda: out1=8'h57;
        8'hdb: out1=8'hb9;
        8'hdc: out1=8'h86;
        8'hdd: out1=8'hc1;
        8'hde: out1=8'h1d;
        8'hdf: out1=8'h9e;
        8'he0: out1=8'he1;
        8'he1: out1=8'hf8;
        8'he2: out1=8'h98;
        8'he3: out1=8'h11;
        8'he4: out1=8'h69;
        8'he5: out1=8'hd9;
        8'he6: out1=8'h8e;
        8'he7: out1=8'h94;
        8'he8: out1=8'h9b;
        8'he9: out1=8'h1e;
        8'hea: out1=8'h87;
        8'heb: out1=8'he9;
        8'hec: out1=8'hce;
        8'hed: out1=8'h55;
        8'hee: out1=8'h28;
        8'hef: out1=8'hdf;
        8'hf0: out1=8'h8c;
        8'hf1: out1=8'ha1;
        8'hf2: out1=8'h89;
        8'hf3: out1=8'h0d;
        8'hf4: out1=8'hbf;
        8'hf5: out1=8'he6;
        8'hf6: out1=8'h42;
        8'hf7: out1=8'h68;
        8'hf8: out1=8'h41;
        8'hf9: out1=8'h99;
        8'hfa: out1=8'h2d;
        8'hfb: out1=8'h0f;
        8'hfc: out1=8'hb0;
        8'hfd: out1=8'h54;
        8'hfe: out1=8'hbb;
        8'hff: out1=8'h16;
    endcase

assign data = out1;//addr[8] ? out1 : out2;

endmodule